import org.apache.spark.sql.SparkSession

object xu46 {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().master("local[*]").appName("spark").getOrCreate()
    val sc = spark.sparkContext
  //  val rdd1 = sc.makeRDD(List(1,5,3,7,6),1)
  //  val rdd2 = sc.parallelize(List(('a',90),('b',70),('c',66),('b',78)))
  //  val rdd3 = sc.makeRDD(List(1,2,3,4,5),1)
  //  rdd1.subtract(rdd3).foreach(println)
  //  rdd1.zip(rdd3).foreach(println)
  //  rdd1.cartesian(rdd3).foreach(println)
  //  rdd2.filter(_._2 >= 90).foreach(println)
    val data1 = sc.makeRDD(List(('a',90),('b',78),('c',66),('b',78)),2)
    val data2 = sc.makeRDD(List(('a',5),('b',3),('c',4),('a',6)),2)
  //  data1.reduceByKey((x.y) => x+y).foreach(println)
  //groupByKey 根据key分组
  //  data1.groupByKey().foreach(println)
  //  data1.groupBy(_._1).foreach(println)
  //join 相同的key和value组成新的元组 如果没匹配上就不会出现 如果存在多个相同key，会依次匹配
  //  data1.join(data2).foreach(println)
  //  data1.leftOuterJoin(data2).foreach(println)
  // combineByKey
    data1.aggregateByKey(0)(math.max(_,_),_+_).foreach(println)



    sc.stop()
  }

}
